import os
import sys
from celery import Celery

# 将项目根目录添加到 sys.path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 引入你的项目主流程函数
from backend_processing import process_video_for_backend

# Celery 配置
# 使用 Redis 作为消息代理和结果后端
REDIS_URL = os.environ.get('REDIS_URL', 'redis://localhost:6379/0')

celery_app = Celery(
    'video_processor',
    broker=REDIS_URL,
    backend=REDIS_URL
)



# 可选的 Celery 配置
celery_app.conf.update(
    task_ignore_result=False,
    task_track_started=True,
    task_serializer='json',
    result_serializer='json',
    accept_content=['json'],
    timezone='Asia/Shanghai', # 根据需要调整时区
    enable_utc=True,
)

@celery_app.task(name='process_video_task')
def process_video_task(project_id: str, destination_video_path: str, languages: list):
    """
    Celery 任务：处理视频文件。
    """
    print(f"Celery 任务开始处理项目ID: {project_id}, 视频文件: {destination_video_path}")
    result = process_video_for_backend(project_id, destination_video_path, languages)
    print(f"Celery 任务处理完成，结果: {result}")
    return result

if __name__ == '__main__':
    # 启动 Celery worker (仅用于测试或手动启动)
    # 在生产环境中，通常使用命令行启动 Celery worker
    # celery -A celery_worker worker -l info
    celery_app.start()